//
// Created by 紫霄 on 2020/4/29.
//

#ifndef LEETCODE_61_H
#define LEETCODE_61_H
#include <set>
#include <vector>
using namespace std;

// class Solution {
// public:
//  bool isStraight(vector<int> &nums) {
//    sort(nums.begin(), nums.end());
//    int i = 0;
//    while (nums[i] == 0) {
//      ++i;
//    }
//    if ((nums[4] - nums[0]) == 4 &&
//        unique(nums.begin(), nums.end()) == nums.end()) {
//      return true;
//    }
//    if (i == 1 && ((nums[4] - nums[1] == 4) || (nums[4] - nums[1] == 3)) &&
//        unique(nums.begin() + 1, nums.end()) == nums.end()) {
//      return true;
//    }
//    if (i == 2 &&
//        ((nums[4] - nums[2] == 3) || (nums[4] - nums[2] == 2) ||
//         (nums[4] - nums[2] == 4)) &&
//        unique(nums.begin() + 2, nums.end()) == nums.end()) {
//      return true;
//    }
//    if (i == 3 &&
//        ((nums[4] - nums[3] == 3) || (nums[4] - nums[3] == 2) ||
//         (nums[4] - nums[3] == 4) || (nums[4] - nums[3] == 1)) &&
//        unique(nums.begin() + 3, nums.end()) == nums.end()) {
//      return true;
//    }
//    return i > 3;
//  }
//};
class Solution {
public:
  bool isStraight(vector<int> &nums) {
    set<int> ans;
    int max = INT_MIN;
    int min = INT_MAX;
    for (int i = 0; i < 5; ++i) {
      if (nums[i] == 0)
        continue;
      max = max > nums[i] ? max : nums[i];
      min = min < nums[i] ? min : nums[i];
      if (ans.count(nums[i]) == 1)
        return false;
      ans.emplace(nums[i]);
    }
    return max - min < 5;
  }
};
#endif // LEETCODE_61_H
